﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using Pago.Models;

namespace Pago
{
    public class PagoService : IPagoService
    {
        public List<Reserva> ListReservas(int idCliente)
        {
            List<Reserva> lstReservas;

            using (var dct = new TerraTourBDDataContext())
            {
                dct.ObjectTrackingEnabled = false;

                //Solo dios sabe como me inspire para recordar como funciona LinQ y poder escribir esto!!
                //eso o la RedBull tmbn estimula la memoria xD!
                lstReservas = dct.Reserva.Where(x => x.ESTADO_PAGO.Equals("I")).Where(x => x.ID_CLIENTE == idCliente).ToList();
            }

            return lstReservas;

        }

        public string PagarReserva(PagoTarjetaModel datosPagoConTarjeta)
        {
            string rspta = string.Empty;

            using (var websrv = new BancoService.BancoServiceClient())
            {
                rspta = websrv.RealizarPago(datosPagoConTarjeta.NumeroTarjeta, datosPagoConTarjeta.ClaveDigital, datosPagoConTarjeta.Token);

                if (rspta.Equals("Pago registrado con éxito"))
                {

                    using (var dtc = new TerraTourBDDataContext())
                    {
                        Reserva reserva = dtc.Reserva.Where(x => x.ID_RESERVA == datosPagoConTarjeta.IdReserva).Single();
                        reserva.ESTADO_PAGO = 'P';

                        dtc.SubmitChanges();
                    }

                }
            }

            return rspta;

        }
    }
}
